package com.fulin.leetcode;

/**
 * @Description
 *  翻转一个整数,算法的核心是通过 取模 弹出原数据的低位，取余获取剩余的部分。
 *  但是这里有一个陷阱：翻转之后的数可能会造成溢出，判断溢出的方法是在原数还没有被弹尽之前，判断是否是达到临界值
 * @Author fulin16
 * @Date 2020/10/21 17:02
 **/
public class Num7 {

    public static void main(String[] args) {
        int x = 1234566;
//        System.out.println(reverse(x));
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);

        int a = 123;

        System.out.println(a % 10);
        System.out.println(a / 10);
    }

    public static int reverse(int x) {
        int res = 0;
        while(x != 0){
            int temp = x % 10;
            x = x / 10;

            if(res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && temp > Integer.MAX_VALUE % 10)){
                return 0;
            }
            if(res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && temp < Integer.MIN_VALUE % 10)){
                return 0;
            }

            res = res * 10 + temp;
        }
        return res;
    }
}
